#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct num
{
    int start, end;
    bool operator<(const num &t) const
    {
        return t.end == end ? start < t.start : end < t.end;
    }
};

// 已知
int n;
num a[200000];
// 未知
int cnt;

void input()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i].start >> a[i].end;
    }
}

void merge_sort(num *l, num *r)
{
    if (r - l > 1)
    {
        auto mid = l + (r - l) / 2;
        merge_sort(l, mid);
        merge_sort(mid, r);
        inplace_merge(l, mid, r);
    }
}
void sovle()
{
    int t1 = 0, t2 = 0;
    for (int i = 0; i < n; i++)
    {
        if (t1 < t2) // 始终让录像机1晚点录完
        {
            swap(t1, t2);
        }
        if (a[i].start >= t1) // 晚录完的都可以，那一定可以
        {
            t1 = a[i].end;
            ++cnt;
        }
        else if (a[i].start >= t2) // 晚录完的摄像机不行，那就用早录完的再看看行不行
        {
            t2 = a[i].end;
            ++cnt;
        }
    }
}

int main()
{
    input();
    merge_sort(a, a + n);
    sovle();
    cout << cnt << endl;
}